.\" Copyright (C) 2022 Jens Axboe <axboe@kernel.dk>
.\"
.\" SPDX-License-Identifier: LGPL-2.0-or-later
.\"
.TH io_uring_peek_cqe 3 "March 12, 2022" "liburing-2.2" "liburing Manual"
.SH NAME
io_uring_peek_cqe \- check if an io_uring completion event is available
.SH SYNOPSIS
.nf
.B #include <liburing.h>
.PP
.BI "int io_uring_peek_cqe(struct io_uring *" ring ","
.BI "                      struct io_uring_cqe **" cqe_ptr ");"
.PP
.BI "int io_uring_peek_batch_cqe(struct io_uring *" ring ","
.BI "                            struct io_uring_cqe **" cqe_ptrs ","
.BI "                            unsigned " count ");"
.fi
.SH DESCRIPTION
.PP
The
.BR io_uring_peek_cqe (3)
function returns an IO completion from the queue belonging to the
.I ring
param, if one is readily available. On successful return,
.I cqe_ptr
param is filled with a valid CQE entry.

This function does not enter the kernel to wait for an event, an event
is only returned if it's already available in the CQ ring.

The
.BR io_uring_peek_batch_cqe (3)
function returns up to
.I count
request completions in
.I cqe_ptrs
belonging to the
.I ring
param, if they are readily available. It will not enter the kernel, unless the
CQ ring is in an overflow condition. Upon successful return,
.I cqe_ptrs
are filled with the number of events indicated by the return value.

.SH RETURN VALUE
On success
.BR io_uring_peek_cqe (3)
returns
.B 0
and the cqe_ptr parameter is filled in. On success
.BR io_uring_peek_batch_cqe (3)
returns the number of completions filled in. On failure, they may return
.BR -EAGAIN .
.SH SEE ALSO
.BR io_uring_submit (3),
.BR io_uring_wait_cqes (3),
.BR io_uring_wait_cqe (3)
